# -*- coding: utf-8 -*-
# @Time    : 2023/7/7 21:52
# @Author  : Hami

# 在执行用例之前主动会进行执行-- 前置
from api_keyword.api_key import ApiKey
import pytest
from config import *
import logging


# 整个测试过程当中都有效，则用session--作用域
@pytest.fixture(scope="session")
def token_fix():
    ak = ApiKey()
    # 2. 填写数据发送请求
    # url = "http://shop-xo.hctestedu.com?s=/api/user/login"  # url
    path = "?s=/api/user/login"
    url = "{}{}".format(PROJECT_URL, path)  # url
    params = {"application": "app", "application_client_type": "weixin"}  # 公共参数
    data = {"accounts": USERNAME, "pwd": PASSWORD, "type": TYPE}  # 请求数据

    res = ak.post(url=url, params=params, data=data)
    # 提取响应数据
    token = ak.get_text(res.text, "$..token")
    return ak, token


@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):
    # out 调用这个方法的case返回过来的一个对象
    out = yield
    # 类似于return ，返回，但是它的区别是当调用它的方法结束之后，返回到当前位置
    res = out.get_result()
    if res.when == "call":
        logging.info(f"用例ID：{res.nodeid}")
        logging.info(f"测试结果：{res.outcome}")
        logging.info(f"故障表示：{res.longrepr}")
        logging.info(f"异常：{call.excinfo}")
        logging.info(f"用例耗时：{res.duration}")
        logging.info("**************************************")